/**
 * Copyright (C) 2012 Dmitriy Kukharev
 *  
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *  
 *      http://www.apache.org/licenses/LICENSE-2.0
 *  
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package ru.nsu.weather;

import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;

/**
 * Network error dialog. Displayed when network is not available
 * @author Dmitriy Kukharev
 *
 */
public class AppErrorDialog extends DialogFragment {
	
	// dialog listener
	private static DialogListener dialogListener;
	
	/**
	 * Creates alert dialog with message
	 * @param activity parent activity
	 * @param msg Message to display
	 */
	public static AppErrorDialog create(DialogListener activity, String msg) {
        try {
            dialogListener = (DialogListener) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.getClass().getName()
                    + " must implement DialogListener");
        }

        AppErrorDialog dialog = new AppErrorDialog(msg);
        return dialog;
		
	}
	
	// message to display
	private String msg;
	
	/**
	 * Creates alert dialog with message
	 * @param msg Message to display
	 */
	private AppErrorDialog(String msg) {
		this.msg = msg;
	}
	
	@Override
	public Dialog onCreateDialog(Bundle savedInstanceState) {
		AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
		builder.setTitle(R.string.error);
		builder.setMessage(msg);
		builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
			public void onClick(DialogInterface dialog, int id) {
				dialogListener.onPositiveButtonClick(AppErrorDialog.this);
			}
		});
        return builder.create();
	}
	
	public interface DialogListener {
		public void onPositiveButtonClick(AppErrorDialog dialog);
	}
}
